#include <iostream>
using namespace std;
struct a {
    int l, r;
    int f;
};
a t[100010];
void add(int x, int y, int k) {
    t[x].f = 1;
    if(!k) {
        t[x].l = t[y].l;
        t[x].r = y;
        t[t[y].l].r = x;
        t[y].l = x;
    }else {
        t[x].r = t[y].r;
        t[x].l = y;
        t[t[y].r].l = x;
        t[y].r = x;
    }
}
int main() {
    int n;
    t[1].l = 0;
    t[0].r = 1;
    t[1].r = 0;
    t[0].l = 1;
    t[1].f = 1;
    t[0].f = 0;
    cin >> n;
    for(int i = 2; i <= n; i++) {
        int k, p;
        cin >> k >> p;
        add(i, k, p);
    }
    int m;
    cin >> m;
    for(int i = 0; i < m; i++) {
        int temp;
        cin >> temp;
        t[temp].f = 0;
    }
    int i = 0;
    while(1) {
        int temp = t[i].r;
        if(t[temp].f) {
            cout << temp << " ";
        } 
        i = temp;
        if(i == 0) {
            break;
        }
    }
    return 0;
}